package org.qianji.goosql.table;

import org.qianji.goosql.Fragment;
import org.qianji.goosql.field.Field;

/**
 * 表
 * 
 * @author gmz
 * 
 */
public interface Table extends Fragment {

	/**
	 * 由指定别名生成新表，当前表不会改变。
	 * 
	 * @param alias
	 *            {@link java.lang.String String} 别名
	 * @return {@link Table Table} 返回由指定别名生成的新表
	 */
	public Table as(String alias);

	/**
	 * 获取字段。
	 * 
	 * @param fieldName
	 *            {@link String String} 字段名
	 * @return {@link Field Field} 当前表的指定字段
	 */
	public Field field(String fieldName);

	/**
	 * 获取数据库中的表，真实的数据库表名或者临时表的查询语句。
	 * 
	 * @return {@link java.lang.String String} 数据库中的表
	 */
	public String getTable();

	/**
	 * 获取SQL语句中的表名，未指定别名时即是真实的表名，否则就是表的别名。
	 * 
	 * @return {@link java.lang.String String} SQL语句中的表
	 */
	public String getTableName();

}
